#include <iostream>
#include <stdio.h>

using namespace std;

// 类模板写法
template <class T>      // 模板
class Arrt{
private:
    T data;
    int size;
public:
    // 构造函数
    Arrt(T arr, int n):data(arr),size(n){}
    // 析构函数
    ~Arrt(){}

    int get_size(){
        return size;
    }
    
    void show(){
        cout << "数组size： " << size << endl;
        for(int i = 0; i < size; i++){
            cout << data[i];
            cout << ' ';
        }
    }
};

int main() {

    bool arr[] = {1,0,1,0,1};
    int n = sizeof(arr)/sizeof(arr[0]);

// 三种实例化方式（模板）：
// 一、隐式创建，　需指定模板类型
    Arrt<bool*> a(arr,n);
    a.show();
    cout << "\n隐式创建：对象 a: "  << &a << endl;
// 二、new创建，　需指定模板类型
    auto* b = new Arrt<bool*>(arr,n);
    b->show();
    cout << "\n隐式创建：对象 b: "  << b << endl;
// 三、显示创建，　需指定模板类型
    Arrt<bool*> c = Arrt<bool*>(arr,n);
    c.show();
    cout << "\n隐式创建：对象 c: "  << &c << endl;

    return 0;

}